home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / Docs / README.NCBI < prev    next >
Text File  |  1996-07-05  |  31KB  |  659 lines

  1. Release 2.10 - Update history at end of this file.
  2.  
  3.                          Introduction
  4.  
  5.     This distribution is release 2.0 of the NCBI core library for building
  6. portable software, and AsnLib, a collection of routines for handling ASN.1
  7. data and developing ASN.1 software applications.  AsnLib and the asntool
  8. application are built using the CoreLib routines.  This software supports
  9. release 1.0 of the Entrez cdrom. In the \doc directory is an MS Word file
  10. which details the information given below. It is also available as hardcopy.
  11. See the README in \doc.
  12.  
  13. The lowest layer of code is the CoreLib.  These are multi-
  14. platform functions for memory allocation (including byte stores), string 
  15. manipulation, file input and output, error and general messages, and 
  16. time and date notification.  These functions have been written only 
  17. where we found that the existing ANSI functions were not sufficiently 
  18. multi-platform or well- behaved among all of the platforms that we 
  19. support.  For each platform (a combination of processor, operating 
  20. system, compiler, and windowing system), we supply a specific ncbilcl.h 
  21. file, which contains typedefs and defines for multi-platform symbols, 
  22. and includes a number of standard header files.  (For example, 
  23. ncbilcl.msw is used for the Microsoft C compiler under Microsoft Windows 
  24. on the PC.)  Use of these symbols, and of the functions in the CoreLib, 
  25. allow us to write multi-platform source code for a variety of disparate 
  26. platforms.
  27.  
  28. The next layer of code is the AsnLib stream reader.  This is 
  29. used in conjunction with a header file and a parse table loader file, 
  30. both of which are produced by processing the formal ASN.1 specification 
  31. with the AsnTool application. The symbolic defines in the 
  32. header file are pointers into the parse table, in which the ASN.1 
  33. specification is represented.  To read at the stream reader level, a 
  34. program alternates between calls to AsnReadId and AsnReadVal.  AsnReadId 
  35. returns a pointer into the parse table, which can be compared against 
  36. the defines in the AsnTool-generated header.  For example, in the 
  37. specification for MEDLINE records, the Medline-entry section has an item 
  38. called "uid", for the unique ID of the record.  This is symbolized in 
  39. the header file as MEDLINE_ENTRY_uid.  When AsnReadId returns this 
  40. symbol, the program calls AsnReadVal to obtain the uid for that record. 
  41. AsnKillValue is also needed to free any memory allocated by AsnReadVal, 
  42. which occurs when the value is a string and not an integer.  The entire 
  43. set of records on the Entrez CD-ROM can be read as a single stream with 
  44. the AsnLib functions.
  45.  
  46. The ASN.1 records may be accessed at a higher level through the object 
  47. loaders, which utilize the stream processing functions to 
  48. load C memory structures with the contents of the ASN.1 objects. For 
  49. each ASN.1 object we specify, we also define an equivalent C memory 
  50. structure.  The object loader level of code contains functions to read 
  51. and write each ASN.1 object.  These are hierarchical, as are the ASN.1 
  52. specifications.  Calling the top level loader, SeqEntryAsnRead, will 
  53. load an entire SeqEntry from an open AsnIo channel, and will return a 
  54. pointer to the loaded memory structure.  The read function for an AsnIo 
  55. channel can be swapped to refer to a normal disk file, a network socket, 
  56. or to compressed data, which it automatically decompresses.  The object 
  57. loader code can interconvert between the highly-branched memory object 
  58. and a linear ASN.1 message with complete fidelity.  The object loaders 
  59. have additional functions, including the ability to explore the 
  60. structure and notify the program when particular data elements are 
  61. encountered.  The entire contents of the Entrez CD-ROM can also be 
  62. streamed through the object loaders.  However, most calls to the object 
  63. loaders for simply reading a particular record are done via the data 
  64. access functions (see below).
  65.  
  66. The data access functions allow a program to call the object loaders on 
  67. a sequence or MEDLINE record given the uid of the record.  
  68. This will get the data into memory regardless of whether the data are 
  69. compressed on the Entrez CD-ROM or are obtained through a service over 
  70. the Internet. This means that a detailed understanding of the files and 
  71. formats on the Entrez disc is not needed by application programmers. The 
  72. function to load a sequence record, SeqEntryGet, needs the uid to 
  73. retrieve and a complexity code parameter. A sequence record is in the 
  74. form of a NucProt set.  This contains a nucleotide (which may itself be 
  75. composed of segments) and all of the proteins it is known to encode.  
  76. The set of segments is called a SegSet, and the individual sequences are 
  77. called BioSeqs.  We have taken the liberty of producing this integrated 
  78. view, but the complexity code parameter allows the record to be easily 
  79. loaded in a simpler, more traditional form, if desired.  The accession 
  80. number term list is built to supply the proper uids to support this 
  81. facility.  This access library is compatible with Entrez release 1.0 or
  82. later only.
  83.  
  84. The sequence utilities and application programmer interface layer 
  85. allows exploration of the loaded memory structures and 
  86. generation of standard literature or sequence reports from those 
  87. objects.  For example, a BioSeq can be converted to FASTA or GenBank 
  88. flat file formats and saved to a file, and a MEDLINE record can be saved 
  89. in MEDLARS format, which is suitable for entry into personal 
  90. bibliographic database programs.  A sequence port can be opened that 
  91. gives a simple, linear view of a segmented sequence, converting 
  92. alphabets, merging exon segments, and dealing with information on both 
  93. strands of the DNA.  This layer also includes some functions to explore 
  94. the NucProt set.  The explore functions visit each individual BioSeq in 
  95. the set, calling a callback function for each sequence node so that a 
  96. program can examine feature tables and other information that are 
  97. associated with the NucProt or SegSets or with the individual sequences.
  98.  
  99. Vibrant is a multi-platform user interface development library that runs 
  100. on the Macintosh, Microsoft Windows on the PC, or X11 and OSF/Motif on 
  101. UNIX and VAX computers [separate documentation].  It is used to build 
  102. the graphical interface for the Entrez application (whose source code is 
  103. in the browser directory). The philosophy behind Vibrant is that 
  104. everything in the published user interface guidelines (the generic 
  105. behavior of windows, menus, buttons, etc.), as well as positioning and 
  106. sizing of graphical control objects, is taken care of automatically.  
  107. The program provides callback functions that are notified when the user 
  108. has manipulated an object. Vibrant and Entrez code are not supported, 
  109. but are provided on an as-is basis.
  110.  
  111. The advantage of using AsnLib and the object loaders, as they are 
  112. implemented, is that application program developers merely need to 
  113. recompile their programs with the new (AsnTool-generated) header files 
  114. and load the new parse tables (included with the Entrez software) in 
  115. order to be able to read the new data.  This process is straightforward, 
  116. and will not break existing program code.  The application is free to 
  117. ignore new fields if it does not choose to take advantage of the new 
  118. kinds of information.
  119.  
  120. The documentation is currently being brought up to date.  The programs 
  121. in the demo directory are designed to teach the proper use of many of 
  122. the functions discussed above.  Many of these programs are not yet 
  123. documented.  The simplest is testcore.c, which tests various functions 
  124. in the CoreLib.  The most complex is getfeat.c, which takes an accession 
  125. number of locus name, determines the unique seq ID, retrieves the entry 
  126. from the Entrez CD-ROM using the data access library, locates all coding 
  127. region features using the explore functions, and prints the DNA 
  128. sequences of all exons using sequence port functions.  If you cannot 
  129. extract and print the doc.tar.Z file, please send an email message with 
  130. your land mailing address and phone number to toolbox@ncbi.nlm.nih.gov, 
  131. and we will mail a copy to you.
  132.  
  133. The contents of the ncbi directory (the highest level, containing the 
  134. NCBI Software Development Kit source code in several subdirectories) is 
  135. shown below.  The readme file contains instructions on copying the 
  136. appropriate make files to be built in the build directory.  The makeall 
  137. file copies headers to the include directory builds four libraries 
  138. (ncbi, ncbiobj, ncbicdr and vibrant), copying them to the lib directory.  
  139. The makedemo file builds the demo programs and the Entrez application:
  140.  
  141.   api           Application Programmer Interface, Sequence Utilities
  142.   asn           ASN.1 specifications for publications and sequences
  143.   asnlib        Source code for AsnLib and asntool
  144.   asnload       AsnLib headers and dynamic parse tables (Mac and PC)
  145.   asnstat       AsnLib headers that use static memory (UNIX and VMS)
  146.   bin           Asntool executable copied here
  147.   browser       Source code for Entrez application
  148.   build         Empty directory for building tools and libraries
  149.   cdromlib      Access routines for data on the Entrez CD-ROM
  150.   config        Configuration files for NCBI software:
  151.     dos
  152.     mac
  153.     unix
  154.     vms
  155.     win
  156.   corelib       Source code for NCBI Core Software Library
  157.   data          Data files used for sequence conversion
  158.   demo          AsnLib and sequence utility demonstration programs
  159.   doc           Documentation in Microsoft Word file
  160.   include       Include files required by applications are copied here
  161.   lib           Libraries copied here
  162.   link          Contains three subdirectories with build accessory files:
  163.     macmpw        Macintosh MPW C
  164.     msdos         Microsoft C and Borland C for DOS
  165.     mswin         Microsoft C and Borland C for Windows
  166.   make          Make files for various systems
  167.   network       Network version of data access
  168.     apple
  169.     entrez
  170.     ncsasock
  171.     netmanag
  172.     nsclilib
  173.     nsdemocl
  174.   object        Functions for reading and writing complex objects
  175.   readme        File that contains important building instructions
  176.   vibrant       Source code for Vibrant portable interface package
  177.  
  178. The platforms that are supported (as indicated by the suffix on the 
  179. relevant ncbilcl.h file) are shown below.  Those marked with an asterisk 
  180. (*) are available as-is:
  181.  
  182.   370*          IBM 370
  183.   acc           SUN acc compiler
  184.   alf           DEC Alpha under OSF/1
  185.   aov           DEC Alpha under AXP/OpenVMS
  186.   aux*          Macintosh A/UX
  187.   bor           Borland for DOS
  188.   bwn           Borland for Microsoft Windows
  189.   ccr           CenterLine CodeCenter
  190.   cpp           SUN C++
  191.   cra*          Cray
  192.   cvx*          Convex
  193.   gcc           Gnu gcc
  194.   hp *          Hewlett Packard
  195.   mpw           Macintosh Programmer's Workshop
  196.   msc           Microsoft C for DOS
  197.   msw           Microsoft for Windows
  198.   nxt*          NeXT
  199.   r6k*          IBM RS 6000
  200.   sgi           Silicon Graphics
  201.   thc           THINK C on Macintosh
  202.   ult           DEC ULTRIX
  203.   vms           DEC VAX/VMS
  204.  
  205. Questions or comments can be directed to toolbox@ncbi.nlm.nih.gov.
  206.  
  207. It is our intent that the ASN.1 specifications will be 
  208. frozen for at least 12 months (through December of 1993).  As molecular 
  209. biology progresses, new features (e.g., RNA editing) will need to be 
  210. represented in the ASN.1 specifications.  Proposed additions will be 
  211. made available for evaluation (with code and sample records included) in 
  212. April of 1993, and the specifications will be finalized in July of 1993.  
  213. Changes will be made with every effort given to backward compatibility 
  214. with data.  We expect to add only new choices and optional fields.  
  215. Existing records will thus continue to be valid instances of the new 
  216. specification, eliminating the need for us to reprocess the databases.
  217.  
  218.     While we feel confident we can to hold to this schedule, we hope users
  219. will understand if events force us to make an interim release of some sort.
  220. In addition, we will make releases of software with additional features over
  221. the next year, but the use of such releases will be at the option of the
  222. software developer.
  223.  
  224. ANSI C:
  225.  
  226.     This software requires an ANSI C compiler.  This will be no problem at
  227. all except to people on Sun machines, where the bundled C compiler, cc, is
  228. non-ansi.  However, you can use the Sun unbundled compiler, acc, or the Gnu
  229. compiler, gcc (which is free) and that works just fine.  If you have written
  230. applications on the Sun with non-ANSI functions, the ANSI compilers will
  231. complain.  See the notes below if this is a problem.
  232.  
  233.  
  234.                          Installation
  235. ALL -
  236.      change to the build subdirectory
  237.  
  238. MS-DOS
  239.     (Also see NEW MAKEFILES, below)
  240.      Microsoft C version 7.00
  241.           copy ..\make\*.dos
  242.           ren makeall.dos makefile
  243.           nmake MSC=1       [note: nmake requires windows or DPMI]
  244.           copy ..\config\ncbi.dos ncbi.cfg  
  245.           check paths in ncbi.cfg file
  246.              [see section on CONFIGURATION]
  247.           Optional:
  248.              edit AUTOEXEC.BAT with "set NCBI=[path to directory containing
  249.                     ncbi.cfg".
  250.              reboot to activate
  251.           To make demo programs:
  252.              nmake -f makedemo.dos MSC=1
  253.      Microsoft Windows version 7.00
  254.           copy ..\make\*.dos
  255.           ren makeall.dos makefile
  256.           nmake MSW=1      [note: nmake requires windows or DPMI]
  257.           check paths in "ncbi.ini" as above
  258.           copy ncbi.ini to your windows directory
  259.           To make demos:
  260.              nmake -f makedemo.dos MSW=1
  261.      Borland C++ 3.1
  262.         copy ..\make\*.dos
  263.         ren makeall.dos makefile
  264.         make -DBOR
  265.         then set paths as in Microsoft C, above.
  266.         To make demos:
  267.            make -f makedemo.dos -DBOR
  268.      Borland C++ 3.1 for Windows
  269.         copy ..\make\*.dos
  270.         ren makeall.dos makefile
  271.         make -DBWN
  272.         then set paths as in Microsoft Windows, above.
  273.         To make demos:
  274.             make -f makedemo.dos -DBWN
  275.  
  276. Mac
  277.      tested on THINK C 5.0.4 and MPW C 3.2
  278.      Both - copy config:mac:ncbi.cnf to your System Folder, or to the
  279.                  System Folder:Preferences subfolder
  280.                  edit the "ASNLOAD" line in "ncbi.cnf" to point to the
  281.                    ncbi:asnload directory in this release
  282.                  edit the "DATA" line to point to the ncbi/data directory
  283.      Think C - rename corelib:ncbimain.mac ncbimain.c
  284.                rename corelib:ncbienv.mac ncbienv.c
  285.                rename corelib:ncbilcl.thc ncbilcl.h
  286.                build separate projects, allocating .c files as described
  287.                in the makeall.thc document.
  288.      MPW C -   copy make:makeall.mpw build:makeall.make
  289.                copy make:makedemo.mpw build:makedemo.make
  290.                set directory to build
  291.                build makeall
  292.                build makedemo
  293.  
  294. Unix
  295.      tested on Sun Sparc, Silicon Graphics, IBM 3090 with AIX
  296.      Sun (with gcc version 2.2 but not Vibrant)
  297.           cp ../make/*.unx .
  298.           mv makeall.unx makefile
  299.           make LCL=gcc CC=gcc RAN=ranlib
  300.           To make demos:
  301.              make -f makedemo.unx CC=gcc
  302.      Sun (with gcc version 2.2 with Vibrant)
  303.           cp ../make/*.unx .
  304.           mv makeall.unx makefile
  305.           source ../make/viball.gcc
  306.           To make demos:
  307.              source ../make/vibdemo.gcc
  308.      Silicon Graphics (no Vibrant)
  309.           cp ../make/*.unx .
  310.           mv makeall.unx makefile
  311.           [ edit makefile to delete make $(LIB4) ]
  312.           make LCL=sgi OTHERLIBS="-lm -lPW -lsun"
  313.           To make demos:
  314.             make -f makedemo.unx LCL=sgi OTHERLIBS="-lm -lPW -lsun"
  315.      Silicon Graphics (with Vibrant)
  316.           cp ../make/*.unx .
  317.           mv makeall.unx makefile
  318.           source ../make/viball.sgi
  319.           To make demos:
  320.             source ../make/vibdemo.sgi
  321.  
  322.     Other UNIX: AIX, ULTRIX, NeXt, Sun acc, DEC Alpha OSF/1
  323.           Follows models above.  Read header in makeall.unx and makedemo.unx
  324.     for details.  Look at viball.* and vibdemo.* for model shell scripts for
  325.     Vibrant versions.
  326.  
  327.     for all UNIX, edit .ncbirc as described above for MSC.
  328.     optional edit .login to "setenv NCBI=[path to .ncbirc file"
  329.  
  330. VMS (without Vibrant) on VAX
  331.      $set def [ncbi.build]
  332.      $copy [-.make]*.dcl *.com
  333.      $@makeall
  334.  
  335.      check ncbi.cfg as described above for MSC.
  336.      edit LOGIN.COM to "define NCBI [path to ncbi.cfg file]"
  337.  
  338.     To make demos:
  339.         $@makedemo
  340.  
  341. VMS (with Vibrant) on VAX
  342.      $set def [ncbi.build]
  343.      $copy [-.make]*.dcl *.com
  344.      $@viball
  345.  
  346.      check ncbi.cfg as described above for MSC.
  347.      edit LOGIN.COM to "define NCBI [path to ncbi.cfg file]"
  348.  
  349.     To make demos:
  350.         $@vibdemo
  351.  
  352.                             Testing
  353.  
  354. VMS only:  look in rundemo.dcl in [make] to see how to give command
  355.     line arguments.  Not all demo programs are shown. Run at least testcore.
  356.  
  357. All else:
  358.  
  359.     In build should be a program called testcore.  Type "testcore -" and
  360. it should show you some default arguments.  Type "testcore" and it will
  361. run through a variety of functions in CoreLib, prompting you for responses
  362. along the way.  It should run without a crash or error report.  If you made
  363. Vibrant versions all demos will have startup dialog boxes.  If not, they
  364. take command line arguments.
  365.  
  366.     If testcore runs, read the documentation for CoreLib and for AsnLib. 
  367. In the AsnLib documentation are instructions for running asntool itself.
  368. for running a few of the demo programs.  There are a large number of demo
  369. programs now (including Entrez itself, if you made the Vibrant versions).
  370.  
  371.  
  372.  
  373. CONFIGURATION OR SETTINGS FILES:
  374.  
  375.     One of the fundamental problems in writing portable software concerns
  376. configuration issues.  Each individual user's computer will have its own
  377. particular hardware and software environment, and each machine will have
  378. its disk file  hierarchy set up in a unique manner.  A program that needs 
  379. accessory information, such as help files, parse tables, or  format
  380. converters, must be given a means of finding the data regardless of where
  381. the user has placed the files.  The difficulty is compounded by the different
  382. conventions for naming files and specifying paths on each class of machine.  
  383. For example, the name of a CD-ROM on the Macintosh is fixed, determined by
  384. information on the CD itself, whereas on the PC it is addressed by a drive
  385. letter, which can be assigned by the user, but which cannot be reconciled
  386. with the name the Macintosh sees.
  387.  
  388.     An associated problem is that many programs will want to allow the user
  389. to make persistent changes to parameters.  These parameters typically involve
  390. numbers or font specifications, but may also include paths to data files.  
  391. Some platforms supply such configuration information in preferences files,
  392. others in environment variables.  Manipulating these settings is platform
  393. dependent, as is the format in which the preference is specified.
  394.  
  395.     The NCBI Software Toolkit core library addresses these problems by
  396. providing configuration or settings files.  These are modeled after the .INI
  397. files used by Microsoft Windows.  Settings files are plain ASCII text files
  398. that may be edited by the user or modified by the program.  They are divided 
  399. into sections, each of which is headed by the section name enclosed in square
  400. brackets.  Below each section heading is a series of key=value strings, somewhat
  401. analogous to the environment variables that are used on many platforms.
  402.  
  403.     The ncbi configuration file supplies general purpose configuration
  404. information on paths for commonly used data files.  The typical file set up for
  405. the Entrez application running on the PC under Microsoft Windows is shown below:
  406.  
  407. [NCBI]
  408. ROOT=D:
  409. ASNLOAD=C:\ENTREZ\ASNLOAD\
  410. DATA=C:\ENTREZ\DATA
  411.  
  412.     The only section is entitled NCBI.  The ROOT entry refers to the path to
  413. the Entrez CD-ROM.  In this example, the user has configured the machine to
  414. use drive letter D.  (On the Macintosh, the name of the disc is SEQDATA, which
  415. cannot be changed by the user.)  The ASNLOAD specifies the path to the ASN.1
  416. parse tables.  These files are required by the AsnLib functions, and all
  417. higher-level procedures that call them,  including the Object Loader, Sequence
  418. Utility, and Data Access functions.  Files pointed to by the DATA entry contain 
  419. information necessary to convert biomolecule sequence data into different
  420. alphabets (e.g., unpacking the 2-bit nucleotide code stored on the Entrez CD
  421. into standard IUPAC letters).
  422.  
  423.     Although the contents of a configuration file is similar regardless of
  424. platform, the name of the file and its location is platform dependent.  If the
  425. base name of the configuration file is xxx, then the actual file name is shown
  426. below for each platform:
  427.  
  428. Macintosh                   xxx.cnf
  429. Microsoft Windows           xxx.INI
  430. MS-DOS (without Windows)    xxx.CFG
  431. UNIX                        .xxxrc
  432. VMS                         xxx.cfg
  433.  
  434.     Samples of such files are in subdirectories of \config.  The UNIX version
  435. does not have the leading '.' in filename so you can see it.  Since VMS and
  436. DOS both use the same file name (ncbi.cfg) the DOS version was called ncbi.dos.
  437. You will have to rename it.  Remember these are just models.  You will have to
  438. set the paths appropriately for your machine yourself.
  439.  
  440.     The location in which these files must reside is also platform dependent,
  441. and the functions that manipulate the contents may look in several places to
  442. find these files.
  443.  
  444.     On the Macintosh, the function first looks in the System Folder, then in the
  445. Preferences folder within the System Folder.  Under Microsoft Windows, the file
  446. must be in the Windows directory, along with all of the other .INI files.  Under
  447. DOS without Windows, the function first looks in the current working directory,
  448. then in the directory whose path is specified in the NCBI environment variable.
  449. Under UNIX and VMS, the current working directory is first checked, then the
  450. user's home directory, and finally the directory specified by the NCBI environment
  451. variable.  (Under UNIX, when it uses the environment variable, it will check for
  452. configuration files first without and then with the initial dot.)  On the multi-
  453. user platforms (UNIX and VMS), the use of the NCBI environment variable allows a
  454. common settings file to be used  as the default by multiple users.  If such a
  455. settings file is  changed under program control, it is copied over into the user's
  456. home directory, and the new copy is modified.  The  order of searching for settings
  457. files ensures that this new copy is used in all subsequent operations.
  458.  
  459.  
  460. contents of ASNLOAD are in ncbi/asnload
  461. contents of DATA are in ncbi/data
  462.  
  463. MAJOR CHANGES FROM DOCUMENTATION:
  464.  
  465.     AsnNode structures have proved to be generally useful and moved from AsnLib
  466. to ncbimisc.  In addition, some elements of structs used in the object loaders
  467. were called "class" to match the ASN.1 names.  Class is a C++ reserved word,
  468. so all instances of "class" have been changed to "_class".
  469.  
  470.     To conform to our naming conventions, we have changed the names appropriately:
  471.  
  472. AsnValue = DataVal
  473. AsnNode = ValNode
  474. class = _class
  475.  
  476.     A global search and replace of your code with these strings (not restricted
  477. to words... we want to change AsnNodePtr = ValNodePtr as well) should fix
  478. any problems.  Field names within structures have not been changed.  If your
  479. code uses only the object loaders, you may not find these strings in your
  480. code at all.
  481.  
  482. DATA ACCESS LIBRARIES
  483.  
  484.     cdromlib contains data access routines compatible with release 1.0-6.0
  485. of the Entrez CDROM.  The documentation for these functions are out of
  486. date.  The routines in cdromlib have been split into entrez, sequence, and
  487. medline access functions.  The interface you should normally program to is
  488. defined in accentr.[ch], accseq.[ch], and accml.[ch].  The form of this
  489. calls has been changed to make them compatible with the NCBI network server,
  490. a client/server version of data access.  A program written to use these
  491. calls can access the the cdrom data, the network data, a combination, or
  492. that plus a local database by just fiddling with defines.  The form of the
  493. api for these functions has also been changed to hide the details of storage
  494. and caching more so that the different optimizations done to support cdrom
  495. and network access are transparent to the application programmer.  The end
  496. user tool called "Entrez" now uses these libraries as it's only means of
  497. data access (i.e., you can write an application of your own with any or all
  498. of Entrez's functionality using just these routines).
  499.  
  500. NETWORK LIBRARIES
  501.  
  502.     The toolbox now includes NCBI "Network Services".  This includes
  503. everything which you need to build your own "Network Entrez" client software.
  504. The network libraries include a generic network services library (nsclilib),
  505. which is used to contact the network services dispatcher and connect to
  506. a desired server.  The network libraries also include an network analog of
  507. cdromlib.  Applications which access the Entrez CDROM using only the data
  508. libraries should operate correctly, without modifications, by linking in
  509. the network library (netentr) along with the nsclilib library.  However,
  510. developers must perform their initial software development using the Entrez
  511. CDROM, to avoid jeopardizing the Entrez Network Service.  Note that some
  512. development platforms require that you obtain a few source modules from
  513. external vendors.  Look at the README files contained in the network directory
  514. (network/README/*) for more details.
  515.  
  516.  
  517. DOCUMENTATION
  518.  
  519.     We are rewriting the documentation to conform with all the new features
  520. contained in this software.  We will add it to the package as soon as possible.
  521.  
  522. DEMO PROGRAMS
  523.  
  524.     As in the tools, there are a number of undocumented programs in the demo
  525. directory as well, that use a number of the utility functions in api.  There
  526. is also a demo program called "getseq" in the cdromlib directory which
  527. retrieves a sequence from the cdrom given any valid sequence id.  These will
  528. be described in more detail in the next set of documentation. Briefly:
  529.  
  530. asn2gnbk.c      converts ASN.1 to GenBank flatfile
  531. asn2rpt.c       converts ASN.1 to human readable report
  532. dosimple.c      converts ASN.1 to a "simple sequence"
  533. getseq.c        gets sequence from Entrez Cdrom using data access library,
  534.                 writes to disk
  535. getfeat.c       ditto, but writes sequence of any CdRegion features to
  536.                  "test.out"
  537. getmesh.c       documented
  538. getpub.c        documented
  539. indexpub.c      documented
  540. seqtest.c       reads ASN.1 sequence, converts to iupac, reports segmented
  541.                 sequences, outputs fasta format to seqtest.out
  542. testcore.c      documented
  543. testobj.c       tests Medline object loader, demonstrates error checking using
  544.                 NULL asnio stream.
  545. entrez          If Vibrant is installed, the full Entrez program is made.
  546. asndhuff        Demonstrates streaming ASN.1 data from the huffman compressed
  547.                 Entrez CDROM (only works on release 1.0 or later).
  548.  
  549. CALLBACK CONVENTIONS
  550.  
  551.     The CoreLib, AsnLib, and Object Loader routines have been converted to use
  552. the LIBCALL and LIBCALLBACK symbols (FAR PASCAL) on the PC for Windows.  This will
  553. allow us to build dyanmic link libraries (DLLs) so that the code can be accessed
  554. from languages other than C.  Callback functions you write that are of types
  555. AsnOptFreeFunc, AsnExpOptFunc, IoFuncType, AsnReadFunc, AsnWriteFunc, and
  556. SeqEntryFunc, should be declared using the LIBCALLBACK macro.  For example, a
  557. callback used as an AsnOptFreeFunc should be declared as follows:
  558.  
  559. static Pointer LIBCALLBACK MyOptFreeFunc (Pointer);
  560.  
  561. The SeqEntryFunc callback used by SeqEntryExplore has not yet been modified to
  562. use the LIBCALLBACK type.  This will be added in the near future.
  563.  
  564.  
  565.  
  566. Update History of this release from 2.0
  567.  
  568. Release 2.11 - 9/28/93
  569.     added network software
  570.     data access library users: note EntrezInitWithExtras(), defined in accentr.h
  571.  
  572. Release 2.10 - 6/18/93
  573.     considerable changes to allow toolbox to be made as a DLL (not
  574.         implemented yet).
  575.     the usual corrections and improvements
  576.  
  577. Release 2.9 - 5/25/93
  578.     small fixes and improvements
  579.     started changing PC/Windows calling conventions to LIBCALL and
  580.     LIBCALLBACK (both currently FAR PASCAL) to allow eventual use of
  581.     dynamic link libraries (DLLs)
  582.  
  583. Release 2.8 - 4/12/93
  584.     many small fixes and improvements
  585.     performance improvements in cdromlib
  586.     vibrant improvements
  587.     improvements to toreport and togenbk
  588.  
  589. Release 2.7 - 3/12/93
  590.     continued refinement of access functions
  591.         accentr made "stand-alone" with no dependency on accml, accseq
  592.         See changes in demo program, getseq.c
  593.     minor bug fixes in object loaders
  594.     refinements in tognbk
  595.     many improvements and refinements to vibrant
  596.     bug fix to asnlex.c for piping text asn1 streams
  597.     changed SeqFeat.except to SeqFeat._except to avoid reserved word in
  598.        Win32
  599.  
  600. Release 2.6 - 2-16-93
  601.     much internal rearrangement of access functions at low levels to
  602.         accommodate 2 cdrom, and network data access. Invisible to
  603.         applications
  604.     access.doc - a brief writeup on data access and exploring in /doc
  605.     improvements to toreport and tognbk for more sequence data sources
  606. Release 2.5 - 1-4-93
  607.     many small fixes and improvements
  608.     asnlib: added generic copy (through file) AsnIoCopy(), copy (in memory)
  609.         AsnIoMemCopy(), and compare in memory, AsnIoMemComp() for any object
  610.         define in object/*.h
  611.     vms version: (Will Gilbert)
  612.         a new Makefile which compiles the sources from there native directory
  613.         This version also checks to see if the user's system has the proper
  614.          include file to make the vibrant library.
  615.         Support for OpenVMS on DEC Alpha machine added.
  616.     data access libraries:
  617.         Changed data access library so that CD-only, network only, or Net+Cd
  618.           may be built from the same baseline.
  619.         Eliminated memory leaks in data access library.
  620.     environment:
  621.         Modified ncbienv.* so that GetAppParam() holds the last-read configuration
  622.           file in a cache. Also modified GetAppParam() and SetAppParam() so that
  623.           they can read all the keys in a section, or destroy a section, if the
  624.           key parameter is NULL.
  625.     files:
  626.         Modified ncbifile.c so that EjectCd() takes the raw device name as an
  627.           extra parameter.
  628.     configuration files:
  629.         Added VMS ncbi config files for the various multi-CD/hard disk configurations,
  630.           and moved all ncbi and entrez config files into their appropriate config
  631.           subdirectories (vms, unix, win, etc.).
  632.     demo programs:
  633.         Will Gilbert added many tutorial comments to getseq.c, getfeat.c, and
  634.           seqtest.c
  635.  
  636. Release 2.4 - 12-3-92
  637.     sequtil.c - improvements to BioseqContextGetSeqFeat() and SeqIdPrint().
  638.     toreport.c - improvements for PDB data
  639.     togenbnk?.c - improvements for unusual ASN.1
  640.     objloc.c  - bug fix in reading release date for PDB id.
  641.     seqport.c - addition of translation routine given CdRegion
  642.  
  643.     data access libraries -
  644.       support for pre-release 0.6 removed
  645.       support for multiple CDROM's (Entrez:Sequences and Entrez:MEDLINE) at
  646.          once.
  647.     vibrant - performance improvements
  648.  
  649. Release 2.3 - 
  650.     ncbimain.xxx - GetArgs now handles negative numbers correctly
  651.  
  652. Release 2.2 - 10-29-92
  653.     objfeat.c - write to uninitialized memory when reading a tRNA feature
  654.                 which contains codon, but no amino acid transferred.
  655.  
  656. Release 2.1 - 10/22/92
  657.     ncbifile.c - VMS open did not work correctly on CDROM.
  658.     objseq.c   - Seq-hist incorrectly read
  659.